V3 CLI Modernization What This Skill Does Modernizes claude-flow v3 CLI with interactive prompts, intelligent command decomposition, enhanced hooks integration, performance optimization, and comprehensive workflow automation capabilities. Quick Start
Initialize CLI modernization analysis
Task ( "CLI architecture" , "Analyze current CLI structure and identify optimization opportunities" , "cli-hooks-developer" )
Modernization implementation (parallel)
- Task
- (
- "Command decomposition"
- ,
- "Break down large CLI files into focused modules"
- ,
- "cli-hooks-developer"
- )
- Task
- (
- "Interactive prompts"
- ,
- "Implement intelligent interactive CLI experience"
- ,
- "cli-hooks-developer"
- )
- Task
- (
- "Hooks enhancement"
- ,
- "Deep integrate hooks with CLI lifecycle"
- ,
- "cli-hooks-developer"
- )
- CLI Architecture Modernization
- Current State Analysis
- Current CLI Issues:
- ├── index.ts: 108KB monolithic file
- ├── enterprise.ts: 68KB feature module
- ├── Limited interactivity: Basic command parsing
- ├── Hooks integration: Basic pre/post execution
- └── No intelligent workflows: Manual command chaining
- Target Architecture:
- ├── Modular Commands: <500 lines per command
- ├── Interactive Prompts: Smart context-aware UX
- ├── Enhanced Hooks: Deep lifecycle integration
- ├── Workflow Automation: Intelligent command orchestration
- └── Performance: <200ms command response time
- Modular Command Architecture
- // src/cli/core/command-registry.ts
- interface
- CommandModule
- {
- name
- :
- string
- ;
- description
- :
- string
- ;
- category
- :
- CommandCategory
- ;
- handler
- :
- CommandHandler
- ;
- middleware
- :
- MiddlewareStack
- ;
- permissions
- :
- Permission
- [
- ]
- ;
- examples
- :
- CommandExample
- [
- ]
- ;
- }
- export
- class
- ModularCommandRegistry
- {
- private
- commands
- =
- new
- Map
- <
- string
- ,
- CommandModule
- >
- (
- )
- ;
- private
- categories
- =
- new
- Map
- <
- CommandCategory
- ,
- CommandModule
- [
- ]
- >
- (
- )
- ;
- private
- aliases
- =
- new
- Map
- <
- string
- ,
- string
- >
- (
- )
- ;
- registerCommand
- (
- command
- :
- CommandModule
- )
- :
- void
- {
- this
- .
- commands
- .
- set
- (
- command
- .
- name
- ,
- command
- )
- ;
- // Register in category index
- if
- (
- !
- this
- .
- categories
- .
- has
- (
- command
- .
- category
- )
- )
- {
- this
- .
- categories
- .
- set
- (
- command
- .
- category
- ,
- [
- ]
- )
- ;
- }
- this
- .
- categories
- .
- get
- (
- command
- .
- category
- )
- !
- .
- push
- (
- command
- )
- ;
- }
- async
- executeCommand
- (
- name
- :
- string
- ,
- args
- :
- string
- [
- ]
- )
- :
- Promise
- <
- CommandResult
- >
- {
- const
- command
- =
- this
- .
- resolveCommand
- (
- name
- )
- ;
- if
- (
- !
- command
- )
- {
- throw
- new
- CommandNotFoundError
- (
- name
- ,
- this
- .
- getSuggestions
- (
- name
- )
- )
- ;
- }
- // Execute middleware stack
- const
- context
- =
- await
- this
- .
- buildExecutionContext
- (
- command
- ,
- args
- )
- ;
- const
- result
- =
- await
- command
- .
- middleware
- .
- execute
- (
- context
- )
- ;
- return
- result
- ;
- }
- private
- resolveCommand
- (
- name
- :
- string
- )
- :
- CommandModule
- |
- undefined
- {
- // Try exact match first
- if
- (
- this
- .
- commands
- .
- has
- (
- name
- )
- )
- {
- return
- this
- .
- commands
- .
- get
- (
- name
- )
- ;
- }
- // Try alias
- const
- aliasTarget
- =
- this
- .
- aliases
- .
- get
- (
- name
- )
- ;
- if
- (
- aliasTarget
- )
- {
- return
- this
- .
- commands
- .
- get
- (
- aliasTarget
- )
- ;
- }
- // Try fuzzy match
- return
- this
- .
- findFuzzyMatch
- (
- name
- )
- ;
- }
- }
- Command Decomposition Strategy
- Swarm Commands Module
- // src/cli/commands/swarm/swarm.command.ts
- @
- Command
- (
- {
- name
- :
- 'swarm'
- ,
- description
- :
- 'Swarm coordination and management'
- ,
- category
- :
- 'orchestration'
- }
- )
- export
- class
- SwarmCommand
- {
- constructor
- (
- private
- swarmCoordinator
- :
- UnifiedSwarmCoordinator
- ,
- private
- promptService
- :
- InteractivePromptService
- )
- {
- }
- @
- SubCommand
- (
- 'init'
- )
- @
- Option
- (
- '--topology'
- ,
- 'Swarm topology (mesh|hierarchical|adaptive)'
- ,
- 'hierarchical'
- )
- @
- Option
- (
- '--agents'
- ,
- 'Number of agents to spawn'
- ,
- 5
- )
- @
- Option
- (
- '--interactive'
- ,
- 'Interactive agent configuration'
- ,
- false
- )
- async
- init
- (
- @
- Arg
- (
- 'projectName'
- )
- projectName
- :
- string
- ,
- options
- :
- SwarmInitOptions
- )
- :
- Promise
- <
- CommandResult
- >
- {
- if
- (
- options
- .
- interactive
- )
- {
- return
- this
- .
- interactiveSwarmInit
- (
- projectName
- )
- ;
- }
- return
- this
- .
- quickSwarmInit
- (
- projectName
- ,
- options
- )
- ;
- }
- private
- async
- interactiveSwarmInit
- (
- projectName
- :
- string
- )
- :
- Promise
- <
- CommandResult
- >
- {
- console
- .
- log
- (
- `
- 🚀 Initializing Swarm for
- ${
- projectName
- }
- `
- )
- ;
- // Interactive topology selection
- const
- topology
- =
- await
- this
- .
- promptService
- .
- select
- (
- {
- message
- :
- 'Select swarm topology:'
- ,
- choices
- :
- [
- {
- name
- :
- 'Hierarchical (Queen-led coordination)'
- ,
- value
- :
- 'hierarchical'
- }
- ,
- {
- name
- :
- 'Mesh (Peer-to-peer collaboration)'
- ,
- value
- :
- 'mesh'
- }
- ,
- {
- name
- :
- 'Adaptive (Dynamic topology switching)'
- ,
- value
- :
- 'adaptive'
- }
- ]
- }
- )
- ;
- // Agent configuration
- const
- agents
- =
- await
- this
- .
- promptAgentConfiguration
- (
- )
- ;
- // Initialize with configuration
- const
- swarm
- =
- await
- this
- .
- swarmCoordinator
- .
- initialize
- (
- {
- name
- :
- projectName
- ,
- topology
- ,
- agents
- ,
- hooks
- :
- {
- onAgentSpawn
- :
- this
- .
- handleAgentSpawn
- .
- bind
- (
- this
- )
- ,
- onTaskComplete
- :
- this
- .
- handleTaskComplete
- .
- bind
- (
- this
- )
- ,
- onSwarmComplete
- :
- this
- .
- handleSwarmComplete
- .
- bind
- (
- this
- )
- }
- }
- )
- ;
- return
- CommandResult
- .
- success
- (
- {
- message
- :
- `
- ✅ Swarm
- ${
- projectName
- }
- initialized with
- ${
- agents
- .
- length
- }
- agents
- `
- ,
- data
- :
- {
- swarmId
- :
- swarm
- .
- id
- ,
- topology
- ,
- agentCount
- :
- agents
- .
- length
- }
- }
- )
- ;
- }
- @
- SubCommand
- (
- 'status'
- )
- async
- status
- (
- )
- :
- Promise
- <
- CommandResult
- >
- {
- const
- swarms
- =
- await
- this
- .
- swarmCoordinator
- .
- listActiveSwarms
- (
- )
- ;
- if
- (
- swarms
- .
- length
- ===
- 0
- )
- {
- return
- CommandResult
- .
- info
- (
- 'No active swarms found'
- )
- ;
- }
- // Interactive swarm selection if multiple
- const
- selectedSwarm
- =
- swarms
- .
- length
- ===
- 1
- ?
- swarms
- [
- 0
- ]
- :
- await
- this
- .
- promptService
- .
- select
- (
- {
- message
- :
- 'Select swarm to inspect:'
- ,
- choices
- :
- swarms
- .
- map
- (
- s
- =>
- (
- {
- name
- :
- `
- ${
- s
- .
- name
- }
- (
- ${
- s
- .
- agents
- .
- length
- }
- agents,
- ${
- s
- .
- topology
- }
- )
- `
- ,
- value
- :
- s
- }
- )
- )
- }
- )
- ;
- return
- this
- .
- displaySwarmStatus
- (
- selectedSwarm
- )
- ;
- }
- }
- Learning Commands Module
- // src/cli/commands/learning/learning.command.ts
- @
- Command
- (
- {
- name
- :
- 'learning'
- ,
- description
- :
- 'Learning system management and optimization'
- ,
- category
- :
- 'intelligence'
- }
- )
- export
- class
- LearningCommand
- {
- constructor
- (
- private
- learningService
- :
- IntegratedLearningService
- ,
- private
- promptService
- :
- InteractivePromptService
- )
- {
- }
- @
- SubCommand
- (
- 'start'
- )
- @
- Option
- (
- '--algorithm'
- ,
- 'RL algorithm to use'
- ,
- 'auto'
- )
- @
- Option
- (
- '--tier'
- ,
- 'Learning tier (basic|standard|advanced)'
- ,
- 'standard'
- )
- async
- start
- (
- options
- :
- LearningStartOptions
- )
- :
- Promise
- <
- CommandResult
- >
- {
- // Auto-detect optimal algorithm if not specified
- if
- (
- options
- .
- algorithm
- ===
- 'auto'
- )
- {
- const
- taskContext
- =
- await
- this
- .
- analyzeCurrentContext
- (
- )
- ;
- options
- .
- algorithm
- =
- this
- .
- learningService
- .
- selectOptimalAlgorithm
- (
- taskContext
- )
- ;
- console
- .
- log
- (
- `
- 🧠 Auto-selected
- ${
- options
- .
- algorithm
- }
- algorithm based on context
- `
- )
- ;
- }
- const
- session
- =
- await
- this
- .
- learningService
- .
- startSession
- (
- {
- algorithm
- :
- options
- .
- algorithm
- ,
- tier
- :
- options
- .
- tier
- ,
- userId
- :
- await
- this
- .
- getCurrentUser
- (
- )
- }
- )
- ;
- return
- CommandResult
- .
- success
- (
- {
- message
- :
- `
- 🚀 Learning session started with
- ${
- options
- .
- algorithm
- }
- `
- ,
- data
- :
- {
- sessionId
- :
- session
- .
- id
- ,
- algorithm
- :
- options
- .
- algorithm
- ,
- tier
- :
- options
- .
- tier
- }
- }
- )
- ;
- }
- @
- SubCommand
- (
- 'feedback'
- )
- @
- Arg
- (
- 'reward'
- ,
- 'Reward value (0-1)'
- ,
- 'number'
- )
- async
- feedback
- (
- @
- Arg
- (
- 'reward'
- )
- reward
- :
- number
- ,
- @
- Option
- (
- '--context'
- ,
- 'Additional context for learning'
- )
- context
- ?
- :
- string
- )
- :
- Promise
- <
- CommandResult
- >
- {
- const
- activeSession
- =
- await
- this
- .
- learningService
- .
- getActiveSession
- (
- )
- ;
- if
- (
- !
- activeSession
- )
- {
- return
- CommandResult
- .
- error
- (
- 'No active learning session found. Start one with
learning start' - )
- ;
- }
- await
- this
- .
- learningService
- .
- submitFeedback
- (
- {
- sessionId
- :
- activeSession
- .
- id
- ,
- reward
- ,
- context
- ,
- timestamp
- :
- new
- Date
- (
- )
- }
- )
- ;
- return
- CommandResult
- .
- success
- (
- {
- message
- :
- `
- 📊 Feedback recorded (reward:
- ${
- reward
- }
- )
- `
- ,
- data
- :
- {
- reward
- ,
- sessionId
- :
- activeSession
- .
- id
- }
- }
- )
- ;
- }
- @
- SubCommand
- (
- 'metrics'
- )
- async
- metrics
- (
- )
- :
- Promise
- <
- CommandResult
- >
- {
- const
- metrics
- =
- await
- this
- .
- learningService
- .
- getMetrics
- (
- )
- ;
- // Interactive metrics display
- await
- this
- .
- displayInteractiveMetrics
- (
- metrics
- )
- ;
- return
- CommandResult
- .
- success
- (
- 'Metrics displayed'
- )
- ;
- }
- }
- Interactive Prompt System
- Advanced Prompt Service
- // src/cli/services/interactive-prompt.service.ts
- interface
- PromptOptions
- {
- message
- :
- string
- ;
- type
- :
- 'select'
- |
- 'multiselect'
- |
- 'input'
- |
- 'confirm'
- |
- 'progress'
- ;
- choices
- ?
- :
- PromptChoice
- [
- ]
- ;
- default
- ?
- :
- any
- ;
- validate
- ?
- :
- (
- input
- :
- any
- )
- =>
- boolean
- |
- string
- ;
- transform
- ?
- :
- (
- input
- :
- any
- )
- =>
- any
- ;
- }
- export
- class
- InteractivePromptService
- {
- private
- inquirer
- :
- any
- ;
- // Dynamic import for tree-shaking
- async
- select
- <
- T
- >
- (
- options
- :
- SelectPromptOptions
- <
- T
- >
- )
- :
- Promise
- <
- T
- >
- {
- const
- {
- default
- :
- inquirer
- }
- =
- await
- import
- (
- 'inquirer'
- )
- ;
- const
- result
- =
- await
- inquirer
- .
- prompt
- (
- [
- {
- type
- :
- 'list'
- ,
- name
- :
- 'selection'
- ,
- message
- :
- options
- .
- message
- ,
- choices
- :
- options
- .
- choices
- ,
- default
- :
- options
- .
- default
- }
- ]
- )
- ;
- return
- result
- .
- selection
- ;
- }
- async
- multiSelect
- <
- T
- >
- (
- options
- :
- MultiSelectPromptOptions
- <
- T
- >
- )
- :
- Promise
- <
- T
- [
- ]
- >
- {
- const
- {
- default
- :
- inquirer
- }
- =
- await
- import
- (
- 'inquirer'
- )
- ;
- const
- result
- =
- await
- inquirer
- .
- prompt
- (
- [
- {
- type
- :
- 'checkbox'
- ,
- name
- :
- 'selections'
- ,
- message
- :
- options
- .
- message
- ,
- choices
- :
- options
- .
- choices
- ,
- validate
- :
- (
- input
- :
- T
- [
- ]
- )
- =>
- {
- if
- (
- options
- .
- minSelections
- &&
- input
- .
- length
- <
- options
- .
- minSelections
- )
- {
- return
- `
- Please select at least
- ${
- options
- .
- minSelections
- }
- options
- `
- ;
- }
- if
- (
- options
- .
- maxSelections
- &&
- input
- .
- length
- >
- options
- .
- maxSelections
- )
- {
- return
- `
- Please select at most
- ${
- options
- .
- maxSelections
- }
- options
- `
- ;
- }
- return
- true
- ;
- }
- }
- ]
- )
- ;
- return
- result
- .
- selections
- ;
- }
- async
- input
- (
- options
- :
- InputPromptOptions
- )
- :
- Promise
- <
- string
- >
- {
- const
- {
- default
- :
- inquirer
- }
- =
- await
- import
- (
- 'inquirer'
- )
- ;
- const
- result
- =
- await
- inquirer
- .
- prompt
- (
- [
- {
- type
- :
- 'input'
- ,
- name
- :
- 'input'
- ,
- message
- :
- options
- .
- message
- ,
- default
- :
- options
- .
- default
- ,
- validate
- :
- options
- .
- validate
- ,
- transformer
- :
- options
- .
- transform
- }
- ]
- )
- ;
- return
- result
- .
- input
- ;
- }
- async
- progressTask
- <
- T
- >
- (
- task
- :
- ProgressTask
- <
- T
- >
- ,
- options
- :
- ProgressOptions
- )
- :
- Promise
- <
- T
- >
- {
- const
- {
- default
- :
- cliProgress
- }
- =
- await
- import
- (
- 'cli-progress'
- )
- ;
- const
- progressBar
- =
- new
- cliProgress
- .
- SingleBar
- (
- {
- format
- :
- `
- ${
- options
- .
- title
- }
- |{bar}| {percentage}% | {status}
- `
- ,
- barCompleteChar
- :
- '█'
- ,
- barIncompleteChar
- :
- '░'
- ,
- hideCursor
- :
- true
- }
- )
- ;
- progressBar
- .
- start
- (
- 100
- ,
- 0
- ,
- {
- status
- :
- 'Starting...'
- }
- )
- ;
- try
- {
- const
- result
- =
- await
- task
- (
- {
- updateProgress
- :
- (
- percent
- :
- number
- ,
- status
- ?
- :
- string
- )
- =>
- {
- progressBar
- .
- update
- (
- percent
- ,
- {
- status
- :
- status
- ||
- 'Processing...'
- }
- )
- ;
- }
- }
- )
- ;
- progressBar
- .
- update
- (
- 100
- ,
- {
- status
- :
- 'Complete!'
- }
- )
- ;
- progressBar
- .
- stop
- (
- )
- ;
- return
- result
- ;
- }
- catch
- (
- error
- )
- {
- progressBar
- .
- stop
- (
- )
- ;
- throw
- error
- ;
- }
- }
- async
- confirmWithDetails
- (
- message
- :
- string
- ,
- details
- :
- ConfirmationDetails
- )
- :
- Promise
- <
- boolean
- >
- {
- console
- .
- log
- (
- '\n'
- +
- chalk
- .
- bold
- (
- message
- )
- )
- ;
- console
- .
- log
- (
- chalk
- .
- gray
- (
- 'Details:'
- )
- )
- ;
- for
- (
- const
- [
- key
- ,
- value
- ]
- of
- Object
- .
- entries
- (
- details
- )
- )
- {
- console
- .
- log
- (
- chalk
- .
- gray
- (
- `
- ${
- key
- }
- :
- ${
- value
- }
- `
- )
- )
- ;
- }
- return
- this
- .
- confirm
- (
- '\nProceed?'
- )
- ;
- }
- }
- Enhanced Hooks Integration
- Deep CLI Hooks Integration
- // src/cli/hooks/cli-hooks-manager.ts
- interface
- CLIHookEvent
- {
- type
- :
- 'command_start'
- |
- 'command_end'
- |
- 'command_error'
- |
- 'agent_spawn'
- |
- 'task_complete'
- ;
- command
- :
- string
- ;
- args
- :
- string
- [
- ]
- ;
- context
- :
- ExecutionContext
- ;
- timestamp
- :
- Date
- ;
- }
- export
- class
- CLIHooksManager
- {
- private
- hooks
- :
- Map
- <
- string
- ,
- HookHandler
- [
- ]
- >
- =
- new
- Map
- (
- )
- ;
- private
- learningIntegration
- :
- LearningHooksIntegration
- ;
- constructor
- (
- )
- {
- this
- .
- learningIntegration
- =
- new
- LearningHooksIntegration
- (
- )
- ;
- this
- .
- setupDefaultHooks
- (
- )
- ;
- }
- private
- setupDefaultHooks
- (
- )
- :
- void
- {
- // Learning integration hooks
- this
- .
- registerHook
- (
- 'command_start'
- ,
- async
- (
- event
- :
- CLIHookEvent
- )
- =>
- {
- await
- this
- .
- learningIntegration
- .
- recordCommandStart
- (
- event
- )
- ;
- }
- )
- ;
- this
- .
- registerHook
- (
- 'command_end'
- ,
- async
- (
- event
- :
- CLIHookEvent
- )
- =>
- {
- await
- this
- .
- learningIntegration
- .
- recordCommandSuccess
- (
- event
- )
- ;
- }
- )
- ;
- this
- .
- registerHook
- (
- 'command_error'
- ,
- async
- (
- event
- :
- CLIHookEvent
- )
- =>
- {
- await
- this
- .
- learningIntegration
- .
- recordCommandError
- (
- event
- )
- ;
- }
- )
- ;
- // Intelligent suggestions
- this
- .
- registerHook
- (
- 'command_start'
- ,
- async
- (
- event
- :
- CLIHookEvent
- )
- =>
- {
- const
- suggestions
- =
- await
- this
- .
- generateIntelligentSuggestions
- (
- event
- )
- ;
- if
- (
- suggestions
- .
- length
- >
- 0
- )
- {
- this
- .
- displaySuggestions
- (
- suggestions
- )
- ;
- }
- }
- )
- ;
- // Performance monitoring
- this
- .
- registerHook
- (
- 'command_end'
- ,
- async
- (
- event
- :
- CLIHookEvent
- )
- =>
- {
- await
- this
- .
- recordPerformanceMetrics
- (
- event
- )
- ;
- }
- )
- ;
- }
- async
- executeHooks
- (
- type
- :
- string
- ,
- event
- :
- CLIHookEvent
- )
- :
- Promise
- <
- void
- >
- {
- const
- handlers
- =
- this
- .
- hooks
- .
- get
- (
- type
- )
- ||
- [
- ]
- ;
- await
- Promise
- .
- all
- (
- handlers
- .
- map
- (
- handler
- =>
- this
- .
- executeHookSafely
- (
- handler
- ,
- event
- )
- )
- )
- ;
- }
- private
- async
- generateIntelligentSuggestions
- (
- event
- :
- CLIHookEvent
- )
- :
- Promise
- <
- Suggestion
- [
- ]
- >
- {
- const
- context
- =
- await
- this
- .
- learningIntegration
- .
- getExecutionContext
- (
- event
- )
- ;
- const
- patterns
- =
- await
- this
- .
- learningIntegration
- .
- findSimilarPatterns
- (
- context
- )
- ;
- return
- patterns
- .
- map
- (
- pattern
- =>
- (
- {
- type
- :
- 'optimization'
- ,
- message
- :
- `
- Based on similar executions, consider:
- ${
- pattern
- .
- suggestion
- }
- `
- ,
- confidence
- :
- pattern
- .
- confidence
- }
- )
- )
- ;
- }
- }
- Learning Integration
- // src/cli/hooks/learning-hooks-integration.ts
- export
- class
- LearningHooksIntegration
- {
- constructor
- (
- private
- agenticFlowHooks
- :
- AgenticFlowHooksClient
- ,
- private
- agentDBLearning
- :
- AgentDBLearningClient
- )
- {
- }
- async
- recordCommandStart
- (
- event
- :
- CLIHookEvent
- )
- :
- Promise
- <
- void
- >
- {
- // Start trajectory tracking
- await
- this
- .
- agenticFlowHooks
- .
- trajectoryStart
- (
- {
- sessionId
- :
- event
- .
- context
- .
- sessionId
- ,
- command
- :
- event
- .
- command
- ,
- args
- :
- event
- .
- args
- ,
- context
- :
- event
- .
- context
- }
- )
- ;
- // Record experience in AgentDB
- await
- this
- .
- agentDBLearning
- .
- recordExperience
- (
- {
- type
- :
- 'command_execution'
- ,
- state
- :
- this
- .
- encodeCommandState
- (
- event
- )
- ,
- action
- :
- event
- .
- command
- ,
- timestamp
- :
- event
- .
- timestamp
- }
- )
- ;
- }
- async
- recordCommandSuccess
- (
- event
- :
- CLIHookEvent
- )
- :
- Promise
- <
- void
- >
- {
- const
- executionTime
- =
- Date
- .
- now
- (
- )
- -
- event
- .
- timestamp
- .
- getTime
- (
- )
- ;
- const
- reward
- =
- this
- .
- calculateReward
- (
- event
- ,
- executionTime
- ,
- true
- )
- ;
- // Complete trajectory
- await
- this
- .
- agenticFlowHooks
- .
- trajectoryEnd
- (
- {
- sessionId
- :
- event
- .
- context
- .
- sessionId
- ,
- success
- :
- true
- ,
- reward
- ,
- verdict
- :
- 'positive'
- }
- )
- ;
- // Submit feedback to learning system
- await
- this
- .
- agentDBLearning
- .
- submitFeedback
- (
- {
- sessionId
- :
- event
- .
- context
- .
- learningSessionId
- ,
- reward
- ,
- success
- :
- true
- ,
- latencyMs
- :
- executionTime
- }
- )
- ;
- // Store successful pattern
- if
- (
- reward
- >
- 0.8
- )
- {
- await
- this
- .
- agenticFlowHooks
- .
- storePattern
- (
- {
- pattern
- :
- event
- .
- command
- ,
- solution
- :
- event
- .
- context
- .
- result
- ,
- confidence
- :
- reward
- }
- )
- ;
- }
- }
- async
- recordCommandError
- (
- event
- :
- CLIHookEvent
- )
- :
- Promise
- <
- void
- >
- {
- const
- executionTime
- =
- Date
- .
- now
- (
- )
- -
- event
- .
- timestamp
- .
- getTime
- (
- )
- ;
- const
- reward
- =
- this
- .
- calculateReward
- (
- event
- ,
- executionTime
- ,
- false
- )
- ;
- // Complete trajectory with error
- await
- this
- .
- agenticFlowHooks
- .
- trajectoryEnd
- (
- {
- sessionId
- :
- event
- .
- context
- .
- sessionId
- ,
- success
- :
- false
- ,
- reward
- ,
- verdict
- :
- 'negative'
- ,
- error
- :
- event
- .
- context
- .
- error
- }
- )
- ;
- // Learn from failure
- await
- this
- .
- agentDBLearning
- .
- submitFeedback
- (
- {
- sessionId
- :
- event
- .
- context
- .
- learningSessionId
- ,
- reward
- ,
- success
- :
- false
- ,
- latencyMs
- :
- executionTime
- ,
- error
- :
- event
- .
- context
- .
- error
- }
- )
- ;
- }
- private
- calculateReward
- (
- event
- :
- CLIHookEvent
- ,
- executionTime
- :
- number
- ,
- success
- :
- boolean
- )
- :
- number
- {
- if
- (
- !
- success
- )
- return
- 0
- ;
- // Base reward for success
- let
- reward
- =
- 0.5
- ;
- // Performance bonus (faster execution)
- const
- expectedTime
- =
- this
- .
- getExpectedExecutionTime
- (
- event
- .
- command
- )
- ;
- if
- (
- executionTime
- <
- expectedTime
- )
- {
- reward
- +=
- 0.3
- *
- (
- 1
- -
- executionTime
- /
- expectedTime
- )
- ;
- }
- // Complexity bonus
- const
- complexity
- =
- this
- .
- calculateCommandComplexity
- (
- event
- )
- ;
- reward
- +=
- complexity
- *
- 0.2
- ;
- return
- Math
- .
- min
- (
- reward
- ,
- 1.0
- )
- ;
- }
- }
- Intelligent Workflow Automation
- Workflow Orchestrator
- // src/cli/workflows/workflow-orchestrator.ts
- interface
- WorkflowStep
- {
- id
- :
- string
- ;
- command
- :
- string
- ;
- args
- :
- string
- [
- ]
- ;
- dependsOn
- :
- string
- [
- ]
- ;
- condition
- ?
- :
- WorkflowCondition
- ;
- retryPolicy
- ?
- :
- RetryPolicy
- ;
- }
- export
- class
- WorkflowOrchestrator
- {
- constructor
- (
- private
- commandRegistry
- :
- ModularCommandRegistry
- ,
- private
- promptService
- :
- InteractivePromptService
- )
- {
- }
- async
- executeWorkflow
- (
- workflow
- :
- Workflow
- )
- :
- Promise
- <
- WorkflowResult
- >
- {
- const
- context
- =
- new
- WorkflowExecutionContext
- (
- workflow
- )
- ;
- // Display workflow overview
- await
- this
- .
- displayWorkflowOverview
- (
- workflow
- )
- ;
- const
- confirmed
- =
- await
- this
- .
- promptService
- .
- confirm
- (
- 'Execute this workflow?'
- )
- ;
- if
- (
- !
- confirmed
- )
- {
- return
- WorkflowResult
- .
- cancelled
- (
- )
- ;
- }
- // Execute steps
- return
- this
- .
- promptService
- .
- progressTask
- (
- async
- (
- {
- updateProgress
- }
- )
- =>
- {
- const
- steps
- =
- this
- .
- sortStepsByDependencies
- (
- workflow
- .
- steps
- )
- ;
- for
- (
- let
- i
- =
- 0
- ;
- i
- <
- steps
- .
- length
- ;
- i
- ++
- )
- {
- const
- step
- =
- steps
- [
- i
- ]
- ;
- updateProgress
- (
- (
- i
- /
- steps
- .
- length
- )
- *
- 100
- ,
- `
- Executing
- ${
- step
- .
- command
- }
- `
- )
- ;
- await
- this
- .
- executeStep
- (
- step
- ,
- context
- )
- ;
- }
- return
- WorkflowResult
- .
- success
- (
- context
- .
- getResults
- (
- )
- )
- ;
- }
- ,
- {
- title
- :
- `
- Workflow:
- ${
- workflow
- .
- name
- }
- `
- }
- )
- ;
- }
- async
- generateWorkflowFromIntent
- (
- intent
- :
- string
- )
- :
- Promise
- <
- Workflow
- >
- {
- // Use learning system to generate workflow
- const
- patterns
- =
- await
- this
- .
- findWorkflowPatterns
- (
- intent
- )
- ;
- if
- (
- patterns
- .
- length
- ===
- 0
- )
- {
- throw
- new
- Error
- (
- 'Could not generate workflow for intent'
- )
- ;
- }
- // Select best pattern or let user choose
- const
- selectedPattern
- =
- patterns
- .
- length
- ===
- 1
- ?
- patterns
- [
- 0
- ]
- :
- await
- this
- .
- promptService
- .
- select
- (
- {
- message
- :
- 'Select workflow template:'
- ,
- choices
- :
- patterns
- .
- map
- (
- p
- =>
- (
- {
- name
- :
- `
- ${
- p
- .
- name
- }
- (
- ${
- p
- .
- confidence
- }
- % match)
- `
- ,
- value
- :
- p
- }
- )
- )
- }
- )
- ;
- return
- this
- .
- customizeWorkflow
- (
- selectedPattern
- ,
- intent
- )
- ;
- }
- private
- async
- executeStep
- (
- step
- :
- WorkflowStep
- ,
- context
- :
- WorkflowExecutionContext
- )
- :
- Promise
- <
- void
- >
- {
- // Check conditions
- if
- (
- step
- .
- condition
- &&
- !
- this
- .
- evaluateCondition
- (
- step
- .
- condition
- ,
- context
- )
- )
- {
- context
- .
- skipStep
- (
- step
- .
- id
- ,
- 'Condition not met'
- )
- ;
- return
- ;
- }
- // Check dependencies
- const
- missingDeps
- =
- step
- .
- dependsOn
- .
- filter
- (
- dep
- =>
- !
- context
- .
- isStepCompleted
- (
- dep
- )
- )
- ;
- if
- (
- missingDeps
- .
- length
- >
- 0
- )
- {
- throw
- new
- WorkflowError
- (
- `
- Step
- ${
- step
- .
- id
- }
- has unmet dependencies:
- ${
- missingDeps
- .
- join
- (
- ', '
- )
- }
- `
- )
- ;
- }
- // Execute with retry policy
- const
- retryPolicy
- =
- step
- .
- retryPolicy
- ||
- {
- maxAttempts
- :
- 1
- }
- ;
- let
- lastError
- :
- Error
- |
- null
- =
- null
- ;
- for
- (
- let
- attempt
- =
- 1
- ;
- attempt
- <=
- retryPolicy
- .
- maxAttempts
- ;
- attempt
- ++
- )
- {
- try
- {
- const
- result
- =
- await
- this
- .
- commandRegistry
- .
- executeCommand
- (
- step
- .
- command
- ,
- step
- .
- args
- )
- ;
- context
- .
- completeStep
- (
- step
- .
- id
- ,
- result
- )
- ;
- return
- ;
- }
- catch
- (
- error
- )
- {
- lastError
- =
- error
- as
- Error
- ;
- if
- (
- attempt
- <
- retryPolicy
- .
- maxAttempts
- )
- {
- await
- this
- .
- delay
- (
- retryPolicy
- .
- backoffMs
- ||
- 1000
- )
- ;
- }
- }
- }
- throw
- new
- WorkflowError
- (
- `
- Step
- ${
- step
- .
- id
- }
- failed after
- ${
- retryPolicy
- .
- maxAttempts
- }
- attempts:
- ${
- lastError
- ?.
- message
- }
- `
- )
- ;
- }
- }
- Performance Optimization
- Command Performance Monitoring
- // src/cli/performance/command-performance.ts
- export
- class
- CommandPerformanceMonitor
- {
- private
- metrics
- =
- new
- Map
- <
- string
- ,
- CommandMetrics
- >
- (
- )
- ;
- async
- measureCommand
- <
- T
- >
- (
- commandName
- :
- string
- ,
- executor
- :
- (
- )
- =>
- Promise
- <
- T
- >
- )
- :
- Promise
- <
- T
- >
- {
- const
- start
- =
- performance
- .
- now
- (
- )
- ;
- const
- memBefore
- =
- process
- .
- memoryUsage
- (
- )
- ;
- try
- {
- const
- result
- =
- await
- executor
- (
- )
- ;
- const
- end
- =
- performance
- .
- now
- (
- )
- ;
- const
- memAfter
- =
- process
- .
- memoryUsage
- (
- )
- ;
- this
- .
- recordMetrics
- (
- commandName
- ,
- {
- executionTime
- :
- end
- -
- start
- ,
- memoryDelta
- :
- memAfter
- .
- heapUsed
- -
- memBefore
- .
- heapUsed
- ,
- success
- :
- true
- }
- )
- ;
- return
- result
- ;
- }
- catch
- (
- error
- )
- {
- const
- end
- =
- performance
- .
- now
- (
- )
- ;
- this
- .
- recordMetrics
- (
- commandName
- ,
- {
- executionTime
- :
- end
- -
- start
- ,
- memoryDelta
- :
- 0
- ,
- success
- :
- false
- ,
- error
- :
- error
- as
- Error
- }
- )
- ;
- throw
- error
- ;
- }
- }
- private
- recordMetrics
- (
- command
- :
- string
- ,
- measurement
- :
- PerformanceMeasurement
- )
- :
- void
- {
- if
- (
- !
- this
- .
- metrics
- .
- has
- (
- command
- )
- )
- {
- this
- .
- metrics
- .
- set
- (
- command
- ,
- new
- CommandMetrics
- (
- command
- )
- )
- ;
- }
- const
- metrics
- =
- this
- .
- metrics
- .
- get
- (
- command
- )
- !
- ;
- metrics
- .
- addMeasurement
- (
- measurement
- )
- ;
- // Alert if performance degrades
- if
- (
- metrics
- .
- getP95ExecutionTime
- (
- )
- >
- 5000
- )
- {
- // 5 seconds
- console
- .
- warn
- (
- `
- ⚠️ Command '
- ${
- command
- }
- ' is performing slowly (P95:
- ${
- metrics
- .
- getP95ExecutionTime
- (
- )
- }
- ms)
- `
- )
- ;
- }
- }
- getCommandReport
- (
- command
- :
- string
- )
- :
- PerformanceReport
- {
- const
- metrics
- =
- this
- .
- metrics
- .
- get
- (
- command
- )
- ;
- if
- (
- !
- metrics
- )
- {
- throw
- new
- Error
- (
- `
- No metrics found for command:
- ${
- command
- }
- `
- )
- ;
- }
- return
- {
- command
- ,
- totalExecutions
- :
- metrics
- .
- getTotalExecutions
- (
- )
- ,
- successRate
- :
- metrics
- .
- getSuccessRate
- (
- )
- ,
- avgExecutionTime
- :
- metrics
- .
- getAverageExecutionTime
- (
- )
- ,
- p95ExecutionTime
- :
- metrics
- .
- getP95ExecutionTime
- (
- )
- ,
- avgMemoryUsage
- :
- metrics
- .
- getAverageMemoryUsage
- (
- )
- ,
- recommendations
- :
- this
- .
- generateRecommendations
- (
- metrics
- )
- }
- ;
- }
- }
- Smart Auto-completion
- Intelligent Command Completion
- // src/cli/completion/intelligent-completion.ts
- export
- class
- IntelligentCompletion
- {
- constructor
- (
- private
- learningService
- :
- LearningService
- ,
- private
- commandRegistry
- :
- ModularCommandRegistry
- )
- {
- }
- async
- generateCompletions
- (
- partial
- :
- string
- ,
- context
- :
- CompletionContext
- )
- :
- Promise
- <
- Completion
- [
- ]
- >
- {
- const
- completions
- :
- Completion
- [
- ]
- =
- [
- ]
- ;
- // 1. Exact command matches
- const
- exactMatches
- =
- this
- .
- commandRegistry
- .
- findCommandsByPrefix
- (
- partial
- )
- ;
- completions
- .
- push
- (
- ...
- exactMatches
- .
- map
- (
- cmd
- =>
- (
- {
- value
- :
- cmd
- .
- name
- ,
- description
- :
- cmd
- .
- description
- ,
- type
- :
- 'command'
- ,
- confidence
- :
- 1.0
- }
- )
- )
- )
- ;
- // 2. Learning-based suggestions
- const
- learnedSuggestions
- =
- await
- this
- .
- learningService
- .
- suggestCommands
- (
- partial
- ,
- context
- )
- ;
- completions
- .
- push
- (
- ...
- learnedSuggestions
- )
- ;
- // 3. Context-aware suggestions
- const
- contextualSuggestions
- =
- await
- this
- .
- generateContextualSuggestions
- (
- partial
- ,
- context
- )
- ;
- completions
- .
- push
- (
- ...
- contextualSuggestions
- )
- ;
- // Sort by confidence and relevance
- return
- completions
- .
- sort
- (
- (
- a
- ,
- b
- )
- =>
- b
- .
- confidence
- -
- a
- .
- confidence
- )
- .
- slice
- (
- 0
- ,
- 10
- )
- ;
- // Top 10 suggestions
- }
- private
- async
- generateContextualSuggestions
- (
- partial
- :
- string
- ,
- context
- :
- CompletionContext
- )
- :
- Promise
- <
- Completion
- [
- ]
- >
- {
- const
- suggestions
- :
- Completion
- [
- ]
- =
- [
- ]
- ;
- // If in git repository, suggest git-related commands
- if
- (
- context
- .
- isGitRepository
- )
- {
- if
- (
- partial
- .
- startsWith
- (
- 'git'
- )
- )
- {
- suggestions
- .
- push
- (
- {
- value
- :
- 'git commit'
- ,
- description
- :
- 'Create git commit with generated message'
- ,
- type
- :
- 'workflow'
- ,
- confidence
- :
- 0.8
- }
- )
- ;
- }
- }
- // If package.json exists, suggest npm commands
- if
- (
- context
- .
- hasPackageJson
- )
- {
- if
- (
- partial
- .
- startsWith
- (
- 'npm'
- )
- ||
- partial
- .
- startsWith
- (
- 'swarm'
- )
- )
- {
- suggestions
- .
- push
- (
- {
- value
- :
- 'swarm init'
- ,
- description
- :
- 'Initialize swarm for this project'
- ,
- type
- :
- 'workflow'
- ,
- confidence
- :
- 0.9
- }
- )
- ;
- }
- }
- return
- suggestions
- ;
- }
- }
- Success Metrics
- CLI Performance Targets
- Command Response
-
- <200ms average command execution time
- File Decomposition
-
- index.ts (108KB) → <10KB per command module
- Interactive UX
-
- Smart prompts with context awareness
- Hook Integration
-
- Deep lifecycle integration with learning
- Workflow Automation
-
- Intelligent multi-step command orchestration
- Auto-completion
-
90% accuracy for command suggestions User Experience Improvements const cliImprovements = { before : { commandResponse : '~500ms' , interactivity : 'Basic command parsing' , workflows : 'Manual command chaining' , suggestions : 'Static help text' } , after : { commandResponse : '<200ms with caching' , interactivity : 'Smart context-aware prompts' , workflows : 'Automated multi-step execution' , suggestions : 'Learning-based intelligent completion' } } ; Related V3 Skills v3-core-implementation - Core domain integration v3-memory-unification - Memory-backed command caching v3-swarm-coordination - CLI swarm management integration v3-performance-optimization - CLI performance monitoring Usage Examples Complete CLI Modernization
Full CLI modernization implementation
Task ( "CLI modernization implementation" , "Implement modular commands, interactive prompts, and intelligent workflows" , "cli-hooks-developer" ) Interactive Command Enhancement
Enhanced interactive commands
claude-flow swarm init --interactive claude-flow learning start --guided claude-flow workflow create --from-intent "setup new project"